    <section class="suite">
      <h1>each</h1>
      <dl>
        <dt>each([1,2,3]</dt>
        <dd><pre><code>_[name](array,(value,key,list)=&#x3E;{
    expect(value).to.be.equal(array[key])
    expect(key).to.be.a(&#x27;string&#x27;)
    expect(list).to.be.deep.equal(array)
})</code></pre></dd>
        <dt>each({&#x22;a&#x22;:&#x22;a&#x22;,&#x22;b&#x22;:&#x22;b&#x22;},value=&#x3E;{ value == &#x27;string&#x27;})</dt>
        <dd><pre><code>_[name](obj,(value,key,list)=&#x3E;{
    expect(value).to.be.equal(obj[key])
})</code></pre></dd>
        <dt>each(&#x22;str&#x22;,value=&#x3E;{ value == &#x27;string&#x27;})</dt>
        <dd><pre><code>_[name](str,(value,key,list)=&#x3E;{
    expect(value).to.be.equal(str.charAt(key))
})</code></pre></dd>
        <dt>each(false,s=&#x3E;s+&#x27;-&#x27;) == false</dt>
        <dd><pre><code>expect(_[name](value,s=&#x3E;s+&#x27;-&#x27;)).to.be.equal(value);</code></pre></dd>
        <dt>each(undefined,s=&#x3E;s+&#x27;-&#x27;) == undefined</dt>
        <dd><pre><code>expect(_[name](value,s=&#x3E;s+&#x27;-&#x27;)).to.be.equal(value);</code></pre></dd>
        <dt>each(null,s=&#x3E;s+&#x27;-&#x27;) == null</dt>
        <dd><pre><code>expect(_[name](value,s=&#x3E;s+&#x27;-&#x27;)).to.be.equal(value);</code></pre></dd>
        <dt>each(NaN,s=&#x3E;s+&#x27;-&#x27;) == NaN</dt>
        <dd><pre><code>expect(_[name](nan,s=&#x3E;s+&#x27;-&#x27;)).to.be.NaN;</code></pre></dd>
      </dl>
    </section>
    <section class="suite">
      <h1>map</h1>
      <dl>
        <dt>map({&#x22;a&#x22;:&#x22;a&#x22;,&#x22;b&#x22;:&#x22;b&#x22;},value=&#x3E;value+1) == {a:&#x27;a1&#x27;,b:&#x27;b1&#x27;}</dt>
        <dd><pre><code>expect(_[name](obj,value=&#x3E;value+1)).to.deep.equal({a:&#x27;a1&#x27;,b:&#x27;b1&#x27;});</code></pre></dd>
        <dt>map({},value=&#x3E;value+1) == {}</dt>
        <dd><pre><code>expect(_[name](objNull,value=&#x3E;value+1)).to.deep.equal({});</code></pre></dd>
        <dt>map([1,2,3],value=&#x3E;value+1) == [2,3,4]</dt>
        <dd><pre><code>expect(_[name](array,value=&#x3E;value+1)).to.deep.equal([2,3,4]);</code></pre></dd>
        <dt>map([],value=&#x3E;value+1) == []</dt>
        <dd><pre><code>expect(_[name](arrayNull,value=&#x3E;value+1)).to.deep.equal([]);</code></pre></dd>
        <dt>map(&#x22;str&#x22;,s=&#x3E;s+&#x27;-&#x27;) == str</dt>
        <dd><pre><code>expect(_[name](str,s=&#x3E;s+&#x27;-&#x27;)).to.be.equal(str);</code></pre></dd>
        <dt>map(false,s=&#x3E;s+&#x27;-&#x27;) == false</dt>
        <dd><pre><code>expect(_[name](value,s=&#x3E;s+&#x27;-&#x27;)).to.be.equal(value);</code></pre></dd>
        <dt>map(undefined,s=&#x3E;s+&#x27;-&#x27;) == undefined</dt>
        <dd><pre><code>expect(_[name](value,s=&#x3E;s+&#x27;-&#x27;)).to.be.equal(value);</code></pre></dd>
        <dt>map(null,s=&#x3E;s+&#x27;-&#x27;) == null</dt>
        <dd><pre><code>expect(_[name](value,s=&#x3E;s+&#x27;-&#x27;)).to.be.equal(value);</code></pre></dd>
        <dt>map(NaN,s=&#x3E;s+&#x27;-&#x27;) == NaN</dt>
        <dd><pre><code>expect(_[name](nan,s=&#x3E;s+&#x27;-&#x27;)).to.be.NaN;</code></pre></dd>
      </dl>
    </section>
    <section class="suite">
      <h1>reduce</h1>
      <dl>
        <dt>reduce([1,2,3],(f,s)=&#x3E;f+s) == 6</dt>
        <dd><pre><code>expect(_[name](array,(f,s)=&#x3E;f+s)).to.be.equal(6)</code></pre></dd>
        <dt>reduce({&#x22;a&#x22;:&#x22;a&#x22;,&#x22;b&#x22;:&#x22;b&#x22;},(f,s)=&#x3E;f+s) == ab</dt>
        <dd><pre><code>expect(_[name](obj,(f,s)=&#x3E;f+s)).to.be.equal(&#x27;ab&#x27;)</code></pre></dd>
        <dt>reduce(&#x22;str&#x22;,(f,s)=&#x3E;f+s) == s-t-r</dt>
        <dd><pre><code>expect(_[name](str,(f,s)=&#x3E;f+&#x27;-&#x27;+s)).to.be.equal(&#x27;s-t-r&#x27;)</code></pre></dd>
        <dt>reduce(false,s=&#x3E;s+&#x27;-&#x27;) == false</dt>
        <dd><pre><code>expect(_[name](value,s=&#x3E;s+&#x27;-&#x27;)).to.be.equal(value);</code></pre></dd>
        <dt>reduce(undefined,s=&#x3E;s+&#x27;-&#x27;) == undefined</dt>
        <dd><pre><code>expect(_[name](value,s=&#x3E;s+&#x27;-&#x27;)).to.be.equal(value);</code></pre></dd>
        <dt>reduce(null,s=&#x3E;s+&#x27;-&#x27;) == null</dt>
        <dd><pre><code>expect(_[name](value,s=&#x3E;s+&#x27;-&#x27;)).to.be.equal(value);</code></pre></dd>
        <dt>reduce(NaN,s=&#x3E;s+&#x27;-&#x27;) == NaN</dt>
        <dd><pre><code>expect(_[name](nan,s=&#x3E;s+&#x27;-&#x27;)).to.be.NaN;</code></pre></dd>
      </dl>
    </section>
    <section class="suite">
      <h1>find</h1>
      <dl>
        <dt>find([1,2,3],value=&#x3E;value==2) == 2</dt>
        <dd><pre><code>expect(_[name](array,value=&#x3E;value==2)).to.be.equal(2)</code></pre></dd>
        <dt>find([1,2,3],value=&#x3E;value==5) == undefined</dt>
        <dd><pre><code>expect(_[name](array,value=&#x3E;value==5)).to.be.an(&#x27;undefined&#x27;)</code></pre></dd>
        <dt>find([],value=&#x3E;value==2) == undefined</dt>
        <dd><pre><code>expect(_[name](arrayNull,value=&#x3E;value==2)).to.be.an(&#x27;undefined&#x27;)</code></pre></dd>
        <dt>find({&#x22;a&#x22;:&#x22;a&#x22;,&#x22;b&#x22;:&#x22;b&#x22;},value=&#x3E;value == &#x27;a&#x27;) == &#x27;a&#x27;</dt>
        <dd><pre><code>expect(_[name](obj,value=&#x3E;value == &#x27;a&#x27;)).to.be.equal(&#x27;a&#x27;)</code></pre></dd>
        <dt>find(&#x22;str&#x22;,value=&#x3E;value == &#x27;s&#x27;) == s</dt>
        <dd><pre><code>expect(_[name](str,value=&#x3E;value == &#x27;s&#x27;)).to.be.equal(&#x27;s&#x27;)</code></pre></dd>
        <dt>find(false,s=&#x3E;s==1) == false</dt>
        <dd><pre><code>expect(_[name](value,s=&#x3E;s==1)).to.be.equal(value);</code></pre></dd>
        <dt>find(undefined,s=&#x3E;s==1) == undefined</dt>
        <dd><pre><code>expect(_[name](value,s=&#x3E;s==1)).to.be.equal(value);</code></pre></dd>
        <dt>find(null,s=&#x3E;s==1) == null</dt>
        <dd><pre><code>expect(_[name](value,s=&#x3E;s==1)).to.be.equal(value);</code></pre></dd>
        <dt>find(NaN,s=&#x3E;s+&#x27;-&#x27;) == NaN</dt>
        <dd><pre><code>expect(_[name](nan,s=&#x3E;s+&#x27;-&#x27;)).to.be.NaN;</code></pre></dd>
      </dl>
    </section>
    <section class="suite">
      <h1>filter</h1>
      <dl>
        <dt>filter([1,2,3],value=&#x3E;value==2) == [2]</dt>
        <dd><pre><code>expect(_[name](array,value=&#x3E;value==2)).to.be.deep.equal([2])</code></pre></dd>
        <dt>filter([1,2,3],value=&#x3E;value==5) == []</dt>
        <dd><pre><code>expect(_[name](array,value=&#x3E;value==5)).to.be.deep.equal([])</code></pre></dd>
        <dt>filter([],value=&#x3E;value==2) == []</dt>
        <dd><pre><code>expect(_[name](arrayNull,value=&#x3E;value==2)).to.be.deep.equal([])</code></pre></dd>
        <dt>filter({&#x22;a&#x22;:&#x22;a&#x22;,&#x22;b&#x22;:&#x22;b&#x22;},value=&#x3E;value == &#x27;b&#x27;) == {b:&#x27;b&#x27;}</dt>
        <dd><pre><code>expect(_[name](obj,value=&#x3E;value == &#x27;b&#x27;)).to.be.deep.equal({b:&#x27;b&#x27;})</code></pre></dd>
        <dt>filter({},value=&#x3E;value == &#x27;b&#x27;) == {}</dt>
        <dd><pre><code>expect(_[name](objNull,value=&#x3E;value == &#x27;b&#x27;)).to.be.deep.equal({})</code></pre></dd>
        <dt>filter(&#x22;str&#x22;,value=&#x3E;value == &#x27;s&#x27;) == str</dt>
        <dd><pre><code>expect(_[name](str,value=&#x3E;value == &#x27;s&#x27;)).to.be.equal(&#x27;str&#x27;)</code></pre></dd>
        <dt>filter(false,s=&#x3E;s==1) == false</dt>
        <dd><pre><code>expect(_[name](value,s=&#x3E;s==1)).to.be.equal(value);</code></pre></dd>
        <dt>filter(undefined,s=&#x3E;s==1) == undefined</dt>
        <dd><pre><code>expect(_[name](value,s=&#x3E;s==1)).to.be.equal(value);</code></pre></dd>
        <dt>filter(null,s=&#x3E;s==1) == null</dt>
        <dd><pre><code>expect(_[name](value,s=&#x3E;s==1)).to.be.equal(value);</code></pre></dd>
        <dt>filter(NaN,s=&#x3E;s+&#x27;-&#x27;) == NaN</dt>
        <dd><pre><code>expect(_[name](nan,s=&#x3E;s+&#x27;-&#x27;)).to.be.NaN;</code></pre></dd>
      </dl>
    </section>
    <section class="suite">
      <h1>every</h1>
      <dl>
        <dt>every([1,2,3],value=&#x3E;value != 0) == true</dt>
        <dd><pre><code>expect(_[name](array,value=&#x3E;value != 0)).to.be.equal(true)</code></pre></dd>
        <dt>every([1,2,3],value=&#x3E;value==5) == false</dt>
        <dd><pre><code>expect(_[name](array,value=&#x3E;value==5)).to.be.equal(false)</code></pre></dd>
        <dt>every([],value=&#x3E;value==2) == true</dt>
        <dd><pre><code>expect(_[name](arrayNull,value=&#x3E;value==2)).to.be.deep.equal(true)</code></pre></dd>
        <dt>every({&#x22;a&#x22;:&#x22;a&#x22;,&#x22;b&#x22;:&#x22;b&#x22;},value=&#x3E;value != 0) == true</dt>
        <dd><pre><code>expect(_[name](obj,value=&#x3E;value != 0)).to.be.equal(true)</code></pre></dd>
        <dt>every({},value=&#x3E;value == fasle) == true</dt>
        <dd><pre><code>expect(_[name](objNull,value=&#x3E;value == &#x27;b&#x27;)).to.be.equal(true)</code></pre></dd>
        <dt>every(&#x27;sss&#x27;,value=&#x3E;value == &#x27;s&#x27;) == true</dt>
        <dd><pre><code>expect(_[name](&#x27;sss&#x27;,value=&#x3E;value == &#x27;s&#x27;)).to.be.equal(true)</code></pre></dd>
        <dt>every(false,s=&#x3E;s==1) == false</dt>
        <dd><pre><code>expect(_[name](value,s=&#x3E;s==1)).to.be.equal(value);</code></pre></dd>
        <dt>every(undefined,s=&#x3E;s==1) == undefined</dt>
        <dd><pre><code>expect(_[name](value,s=&#x3E;s==1)).to.be.equal(value);</code></pre></dd>
        <dt>every(null,s=&#x3E;s==1) == null</dt>
        <dd><pre><code>expect(_[name](value,s=&#x3E;s==1)).to.be.equal(value);</code></pre></dd>
        <dt>every(NaN,s=&#x3E;s+&#x27;-&#x27;) == NaN</dt>
        <dd><pre><code>expect(_[name](nan,s=&#x3E;s+&#x27;-&#x27;)).to.be.NaN;</code></pre></dd>
      </dl>
    </section>
    <section class="suite">
      <h1>some</h1>
      <dl>
        <dt>some([1,2,3],value=&#x3E;value == 1) == true</dt>
        <dd><pre><code>expect(_[name](array,value=&#x3E;value == 1)).to.be.equal(true)</code></pre></dd>
        <dt>some([1,2,3],value=&#x3E;value==5) == false</dt>
        <dd><pre><code>expect(_[name](array,value=&#x3E;value==5)).to.be.equal(false)</code></pre></dd>
        <dt>some([],value=&#x3E;value==2) == false</dt>
        <dd><pre><code>expect(_[name](arrayNull,value=&#x3E;value==false)).to.be.deep.equal(false)</code></pre></dd>
        <dt>some({&#x22;a&#x22;:&#x22;a&#x22;,&#x22;b&#x22;:&#x22;b&#x22;},value=&#x3E;value == &#x27;a&#x27;) == true</dt>
        <dd><pre><code>expect(_[name](obj,value=&#x3E;value == &#x27;a&#x27;)).to.be.equal(true)</code></pre></dd>
        <dt>some({},value=&#x3E;value == &#x27;a&#x27;) == false</dt>
        <dd><pre><code>expect(_[name](objNull,value=&#x3E;value == false)).to.be.equal(false)</code></pre></dd>
        <dt>some(&#x27;sss&#x27;,value=&#x3E;value == &#x27;s&#x27;) == true</dt>
        <dd><pre><code>expect(_[name](&#x27;sss&#x27;,value=&#x3E;value == &#x27;s&#x27;)).to.be.equal(true)</code></pre></dd>
        <dt>some(false,s=&#x3E;s==1) == false</dt>
        <dd><pre><code>expect(_[name](value,s=&#x3E;s==1)).to.be.equal(value);</code></pre></dd>
        <dt>some(undefined,s=&#x3E;s==1) == undefined</dt>
        <dd><pre><code>expect(_[name](value,s=&#x3E;s==1)).to.be.equal(value);</code></pre></dd>
        <dt>some(null,s=&#x3E;s==1) == null</dt>
        <dd><pre><code>expect(_[name](value,s=&#x3E;s==1)).to.be.equal(value);</code></pre></dd>
        <dt>some(NaN,s=&#x3E;s+&#x27;-&#x27;) == NaN</dt>
        <dd><pre><code>expect(_[name](nan,s=&#x3E;s+&#x27;-&#x27;)).to.be.NaN;</code></pre></dd>
      </dl>
    </section>
    <section class="suite">
      <h1>checkValueType</h1>
      <dl>
        <dt>checkValueType([1,2,3]) == &#x27;array&#x27;</dt>
        <dd><pre><code>expect(_[name](array)).to.be.equal(&#x27;array&#x27;)</code></pre></dd>
        <dt>checkValueType({&#x22;a&#x22;:&#x22;a&#x22;,&#x22;b&#x22;:&#x22;b&#x22;}) == &#x27;object&#x27;</dt>
        <dd><pre><code>expect(_[name](obj)).to.be.equal(&#x27;object&#x27;)</code></pre></dd>
        <dt>checkValueType(Function) == &#x27;function&#x27;</dt>
        <dd><pre><code>expect(_[name](fn)).to.be.equal(&#x27;function&#x27;)</code></pre></dd>
        <dt>checkValueType(&#x22;str&#x22;) == &#x27;string&#x27;</dt>
        <dd><pre><code>expect(_[name](str)).to.be.equal(&#x27;string&#x27;)</code></pre></dd>
        <dt>checkValueType(123) == &#x27;number&#x27;</dt>
        <dd><pre><code>expect(_[name](num)).to.be.equal(&#x27;number&#x27;)</code></pre></dd>
        <dt>checkValueType(true) == &#x27;boolean&#x27;</dt>
        <dd><pre><code>expect(_[name](boolT)).to.be.equal(&#x27;boolean&#x27;)</code></pre></dd>
        <dt>checkValueType(undefined) == &#x27;undefined&#x27;</dt>
        <dd><pre><code>expect(_[name](undefined)).to.be.equal(&#x27;undefined&#x27;)</code></pre></dd>
        <dt>checkValueType(null) == &#x27;null&#x27;</dt>
        <dd><pre><code>expect(_[name](null)).to.be.equal(&#x27;null&#x27;)</code></pre></dd>
        <dt>checkValueType(Symbol) == &#x27;symbol&#x27;</dt>
        <dd><pre><code>expect(_[name](symbol)).to.be.equal(&#x27;symbol&#x27;)</code></pre></dd>
        <dt>checkValueType(Promise) == &#x27;promise&#x27;</dt>
        <dd><pre><code>expect(_[name](promise)).to.be.equal(&#x27;promise&#x27;)</code></pre></dd>
        <dt>checkValueType(/1/) == &#x27;regexp&#x27;</dt>
        <dd><pre><code>expect(_[name](regexp)).to.be.equal(&#x27;regexp&#x27;)</code></pre></dd>
        <dt>checkValueType(NaN) == &#x27;NaN&#x27;</dt>
        <dd><pre><code>expect(_[name](nan)).to.be.equal(&#x27;NaN&#x27;);</code></pre></dd>
      </dl>
    </section>
    <section class="suite">
      <h1>deepClone</h1>
      <dl>
        <dt>deepClone([1,2,3]) == [1,2,3]</dt>
        <dd><pre><code>expect(_[name](array)).to.be.deep.equal([1,2,3])</code></pre></dd>
        <dt>deepClone({&#x22;a&#x22;:&#x22;a&#x22;,&#x22;b&#x22;:&#x22;b&#x22;}) == {a:&#x27;a&#x27;,b:&#x27;b&#x27;}</dt>
        <dd><pre><code>expect(_[name](obj)).to.be.deep.equal({a:&#x27;a&#x27;,b:&#x27;b&#x27;})</code></pre></dd>
        <dt>deepClone(&#x22;str&#x22;) == &#x27;str&#x27;</dt>
        <dd><pre><code>expect(_[name](str)).to.be.equal(&#x27;str&#x27;)</code></pre></dd>
        <dt>deepClone(123) == 123</dt>
        <dd><pre><code>expect(_[name](num)).to.be.equal(123)</code></pre></dd>
        <dt>deepClone(true) == true</dt>
        <dd><pre><code>expect(_[name](boolT)).to.be.equal(true)</code></pre></dd>
        <dt>deepClone(undefined) == undefined</dt>
        <dd><pre><code>expect(_[name](undefined)).to.be.a(&#x27;undefined&#x27;)</code></pre></dd>
        <dt>deepClone(null) == null</dt>
        <dd><pre><code>expect(_[name](null)).to.be.equal(null)</code></pre></dd>
        <dt>deepClone(NaN) == NaN</dt>
        <dd><pre><code>expect(_[name](nan)).to.be.NaN;</code></pre></dd>
      </dl>
    </section>
    <section class="suite">
      <h1>contains</h1>
      <dl>
        <dt>contains([1,2,3],3) == true</dt>
        <dd><pre><code>expect(_[name](array,3)).to.be.equal(true)</code></pre></dd>
        <dt>contains({&#x22;a&#x22;:&#x22;a&#x22;,&#x22;b&#x22;:&#x22;b&#x22;},&#x27;a&#x27;) == true</dt>
        <dd><pre><code>expect(_[name](obj,&#x27;a&#x27;)).to.be.equal(true)</code></pre></dd>
        <dt>contains({&#x22;a&#x22;:&#x22;a&#x22;,&#x22;b&#x22;:&#x22;b&#x22;},&#x27;1&#x27;) == false</dt>
        <dd><pre><code>expect(_[name](obj,&#x27;1&#x27;)).to.be.equal(false)</code></pre></dd>
        <dt>contains(&#x22;str&#x22;,&#x27;s&#x27;) == true</dt>
        <dd><pre><code>expect(_[name](str,&#x27;s&#x27;)).to.be.equal(true)</code></pre></dd>
        <dt>contains(123) == 123</dt>
        <dd><pre><code>expect(_[name](num)).to.be.equal(123)</code></pre></dd>
        <dt>contains(true) == true</dt>
        <dd><pre><code>expect(_[name](boolT)).to.be.equal(true)</code></pre></dd>
        <dt>contains(undefined) == undefined</dt>
        <dd><pre><code>expect(_[name](undefined)).to.be.a(&#x27;undefined&#x27;)</code></pre></dd>
        <dt>contains(null) == null</dt>
        <dd><pre><code>expect(_[name](null)).to.be.equal(null)</code></pre></dd>
        <dt>contains(NaN) == NaN</dt>
        <dd><pre><code>expect(_[name](nan)).to.be.NaN;</code></pre></dd>
      </dl>
    </section>
    <section class="suite">
      <h1>max</h1>
      <dl>
        <dt>max([1,2,3]) == 3</dt>
        <dd><pre><code>expect(_[name](array)).to.be.equal(3)</code></pre></dd>
        <dt>max([]) == undefined</dt>
        <dd><pre><code>expect(_[name](arrayNull)).to.be.a(&#x27;undefined&#x27;)</code></pre></dd>
        <dt>max({&#x22;a&#x22;:&#x22;a&#x22;,&#x22;b&#x22;:&#x22;b&#x22;}) == undefined</dt>
        <dd><pre><code>expect(_[name](obj)).to.be.a(&#x27;undefined&#x27;)</code></pre></dd>
        <dt>max({}) == undefined</dt>
        <dd><pre><code>expect(_[name](objNull)).to.be.a(&#x27;undefined&#x27;)</code></pre></dd>
        <dt>max(&#x22;str&#x22;) == &#x27;str&#x27;</dt>
        <dd><pre><code>expect(_[name](str)).to.be.equal(&#x27;str&#x27;)</code></pre></dd>
        <dt>max(123) == 123</dt>
        <dd><pre><code>expect(_[name](num)).to.be.equal(123)</code></pre></dd>
        <dt>max(true) == true</dt>
        <dd><pre><code>expect(_[name](boolT)).to.be.equal(true)</code></pre></dd>
        <dt>max(undefined) == undefined</dt>
        <dd><pre><code>expect(_[name](undefined)).to.be.a(&#x27;undefined&#x27;)</code></pre></dd>
        <dt>max(null) == null</dt>
        <dd><pre><code>expect(_[name](null)).to.be.equal(null)</code></pre></dd>
        <dt>max(NaN) == NaN</dt>
        <dd><pre><code>expect(_[name](nan)).to.be.NaN;</code></pre></dd>
      </dl>
    </section>
    <section class="suite">
      <h1>min</h1>
      <dl>
        <dt>min([1,2,3]) == 1</dt>
        <dd><pre><code>expect(_[name](array)).to.be.equal(1)</code></pre></dd>
        <dt>min([],&#x27;a&#x27;) == undefined</dt>
        <dd><pre><code>expect(_[name](arrayNull)).to.be.a(&#x27;undefined&#x27;)</code></pre></dd>
        <dt>min({&#x22;a&#x22;:&#x22;a&#x22;,&#x22;b&#x22;:&#x22;b&#x22;}) == undefined</dt>
        <dd><pre><code>expect(_[name](obj)).to.be.a(&#x27;undefined&#x27;)</code></pre></dd>
        <dt>min({}) == undefined</dt>
        <dd><pre><code>expect(_[name](objNull)).to.be.a(&#x27;undefined&#x27;)</code></pre></dd>
        <dt>min(&#x22;str&#x22;) == &#x27;str&#x27;</dt>
        <dd><pre><code>expect(_[name](str)).to.be.equal(&#x27;str&#x27;)</code></pre></dd>
        <dt>min(123) == 123</dt>
        <dd><pre><code>expect(_[name](num)).to.be.equal(123)</code></pre></dd>
        <dt>min(true) == true</dt>
        <dd><pre><code>expect(_[name](boolT)).to.be.equal(true)</code></pre></dd>
        <dt>min(undefined) == undefined</dt>
        <dd><pre><code>expect(_[name](undefined)).to.be.a(&#x27;undefined&#x27;)</code></pre></dd>
        <dt>min(null) == null</dt>
        <dd><pre><code>expect(_[name](null)).to.be.equal(null)</code></pre></dd>
        <dt>min(NaN) == NaN</dt>
        <dd><pre><code>expect(_[name](nan)).to.be.NaN;</code></pre></dd>
      </dl>
    </section>
    <section class="suite">
      <h1>size</h1>
      <dl>
        <dt>size([1,2,3]) == 3</dt>
        <dd><pre><code>expect(_[name](array)).to.be.equal(3)</code></pre></dd>
        <dt>size([]) == 0</dt>
        <dd><pre><code>expect(_[name](arrayNull)).to.be.equal(0)</code></pre></dd>
        <dt>size({&#x22;a&#x22;:&#x22;a&#x22;,&#x22;b&#x22;:&#x22;b&#x22;}) == 2</dt>
        <dd><pre><code>expect(_[name](obj)).to.be.equal(2)</code></pre></dd>
        <dt>size({}) == 0</dt>
        <dd><pre><code>expect(_[name](objNull)).to.be.equal(0)</code></pre></dd>
        <dt>size(&#x22;str&#x22;) == 3</dt>
        <dd><pre><code>expect(_[name](str)).to.be.equal(3)</code></pre></dd>
        <dt>size(123) == 123</dt>
        <dd><pre><code>expect(_[name](num)).to.be.equal(123)</code></pre></dd>
        <dt>size(true) == true</dt>
        <dd><pre><code>expect(_[name](boolT)).to.be.equal(true)</code></pre></dd>
        <dt>size(undefined) == undefined</dt>
        <dd><pre><code>expect(_[name](undefined)).to.be.a(&#x27;undefined&#x27;)</code></pre></dd>
        <dt>size(null) == null</dt>
        <dd><pre><code>expect(_[name](null)).to.be.equal(null)</code></pre></dd>
        <dt>size(NaN) == NaN</dt>
        <dd><pre><code>expect(_[name](nan)).to.be.NaN;</code></pre></dd>
      </dl>
    </section>
    <section class="suite">
      <h1>last</h1>
      <dl>
        <dt>last([1,2,3]) == 3</dt>
        <dd><pre><code>expect(_[name](array)).to.be.equal(3)</code></pre></dd>
        <dt>last([]) == undefined</dt>
        <dd><pre><code>expect(_[name](arrayNull)).to.be.a(&#x27;undefined&#x27;)</code></pre></dd>
        <dt>last(&#x22;str&#x22;) == &#x27;str&#x27;</dt>
        <dd><pre><code>expect(_[name](str)).to.be.equal(&#x27;str&#x27;)</code></pre></dd>
        <dt>last(123) == 123</dt>
        <dd><pre><code>expect(_[name](num)).to.be.equal(123)</code></pre></dd>
        <dt>last(true) == true</dt>
        <dd><pre><code>expect(_[name](boolT)).to.be.equal(true)</code></pre></dd>
        <dt>last(undefined) == undefined</dt>
        <dd><pre><code>expect(_[name](undefined)).to.be.a(&#x27;undefined&#x27;)</code></pre></dd>
        <dt>last(null) == null</dt>
        <dd><pre><code>expect(_[name](null)).to.be.equal(null)</code></pre></dd>
        <dt>last(NaN) == NaN</dt>
        <dd><pre><code>expect(_[name](nan)).to.be.NaN;</code></pre></dd>
      </dl>
    </section>
    <section class="suite">
      <h1>unique</h1>
      <dl>
        <dt>unique([1,2,2]) == [1,2]</dt>
        <dd><pre><code>expect(_[name]([1,2,2])).to.be.deep.equal([1,2])</code></pre></dd>
        <dt>unique([]) == []</dt>
        <dd><pre><code>expect(_[name](arrayNull)).to.be.deep.equal([])</code></pre></dd>
        <dt>unique(&#x22;str&#x22;) == &#x27;str&#x27;</dt>
        <dd><pre><code>expect(_[name](str)).to.be.equal(&#x27;str&#x27;)</code></pre></dd>
        <dt>unique(123) == 123</dt>
        <dd><pre><code>expect(_[name](num)).to.be.equal(123)</code></pre></dd>
        <dt>unique(true) == true</dt>
        <dd><pre><code>expect(_[name](boolT)).to.be.equal(true)</code></pre></dd>
        <dt>unique(undefined) == undefined</dt>
        <dd><pre><code>expect(_[name](undefined)).to.be.a(&#x27;undefined&#x27;)</code></pre></dd>
        <dt>unique(null) == null</dt>
        <dd><pre><code>expect(_[name](null)).to.be.equal(null)</code></pre></dd>
        <dt>unique(NaN) == NaN</dt>
        <dd><pre><code>expect(_[name](nan)).to.be.NaN;</code></pre></dd>
      </dl>
    </section>
    <section class="suite">
      <h1>range</h1>
      <dl>
        <dt>range(4) == [0,1,2,3]</dt>
        <dd><pre><code>expect(_[name](4)).to.be.deep.equal([0,1,2,3])</code></pre></dd>
        <dt>range(1,4) == [1,2,3]</dt>
        <dd><pre><code>expect(_[name](1,4)).to.be.deep.equal([1,2,3])</code></pre></dd>
        <dt>range(2,8,2) == [2,4,6]</dt>
        <dd><pre><code>expect(_[name](2,8,2)).to.be.deep.equal([2,4,6])</code></pre></dd>
        <dt>range(2,8,NaN) throw TypeError</dt>
        <dd><pre><code>expect(range).to.throw(TypeError)</code></pre></dd>
      </dl>
    </section>
    <section class="suite">
      <h1>partial</h1>
      <dl>
        <dt>let add = (a,b) =&#x3E; a+b;let add2 = partial(add,null,2);add2(4) == 6</dt>
        <dd><pre><code>let add = function(a,b) {return a+b}
let add2 = _[name](add,null,2);
expect(add2(4)).to.be.equal(6)</code></pre></dd>
      </dl>
    </section>
    <section class="suite">
      <h1>memoize</h1>
      <dl>
        <dt>&#x7B2C;&#x4E00;&#x6B21;&#x8C03;&#x7528; factorial(5), &#x9012;&#x5F52;5&#x6B21; &#x26;&#x26; factorial(5) == 120</dt>
        <dd><pre><code>expect(factorial(5)).to.be.equal(120)
expect(first).to.be.equal(5)</code></pre></dd>
        <dt>&#x7B2C;&#x4E8C;&#x6B21;&#x8C03;&#x7528; factorial(5), &#x9012;&#x5F52;0&#x6B21; &#x26;&#x26; factorial(5) == 120</dt>
        <dd><pre><code>first = 0;
expect(factorial(5)).to.be.equal(120)
expect(first).to.be.equal(0)</code></pre></dd>
      </dl>
    </section>
    <section class="suite">
      <h1>curry</h1>
      <dl>
        <dt>let add2 = curry(add)(1); add2(2) == 3</dt>
        <dd><pre><code>let add = function (a,b) {
    return a+b;
}
let add2 = _.curry(add)(2)
expect(add2(1)).to.be.equal(3)</code></pre></dd>
        <dt>let add2 = curry(add)(1,2); add2 == 3</dt>
        <dd><pre><code>let add = function(a,b) {
    return a+b;
}
let add2 = _.curry(add)(1,2)
expect(add2).to.be.equal(3)</code></pre></dd>
      </dl>
    </section>
    <section class="suite">
      <h1>once</h1>
      <dl>
        <dt>&#x7B2C;&#x4E00;&#x6B21;&#x8C03;&#x7528;once &#x8FD0;&#x884C;&#x4E86;</dt>
        <dd><pre><code>expect(count).to.be.equal(1)</code></pre></dd>
        <dt>&#x7B2C;&#x4E8C;&#x6B21;&#x8C03;&#x7528;once &#x6CA1;&#x8FD0;&#x884C;&#x4E86;</dt>
        <dd><pre><code>expect(count).to.be.equal(1)</code></pre></dd>
      </dl>
    </section>
    <section class="suite">
      <h1>throttle</h1>
      <dl>
        <dt>for &#x5FAA;&#x73AF;5&#x6B21;&#xFF0C;&#x53EA;&#x8FD0;&#x884C;&#x4E00;&#x6B21;,200ms&#x7684;&#x95F4;&#x9694;</dt>
        <dd><pre><code>let count = 0;
let add = _[name]((cb)=&#x3E;{
    count++;
    cb();
})
for (let i=0; i&#x3C;5; i++) {
    add(()=&#x3E;{
        try {
            expect(count).to.be.equal(1)
            done();
        } catch(e) {
            done(e)
        }
    });
}</code></pre></dd>
      </dl>
    </section>
    <section class="suite">
      <h1>delay</h1>
      <dl>
        <dt>500ms &#x540E;&#x8FD0;&#x884C;&#x4E00;&#x6B21;</dt>
        <dd><pre><code>_[name](()=&#x3E;{
    try {
        expect(true).to.be.equal(true)
        done();
    } catch(e) {
        done(e)
    }
},500)</code></pre></dd>
      </dl>
    </section>
    <section class="suite">
      <h1>debounce</h1>
      <dl>
        <dt>&#x8FD0;&#x884C;&#x4E00;&#x6B21;&#xFF0C;&#x8FC7;500ms &#x624D;&#x80FD;&#x518D;&#x6B21;&#x8FD0;&#x884C;&#x4E00;&#x6B21;</dt>
        <dd><pre><code>let count = 0;
let add = _[name]((cb)=&#x3E;{
    count++;
    cb &#x26;&#x26; cb();
},500)
add();
setTimeout(()=&#x3E;{
    add(()=&#x3E;{
        try {
            expect(count).to.be.equal(2)
            done();
        } catch(e) {
            done(e)
        }
    });
},600)</code></pre></dd>
      </dl>
    </section>
    <section class="suite">
      <h1>pipe</h1>
      <dl>
        <dt>[1,-3,2] &#x53D6;&#x7EDD;&#x5BF9;&#x503C;-&#x3E; &#x53D6;&#x6700;&#x5927;&#x503C; == 3 </dt>
        <dd><pre><code>let mapQual = array=&#x3E;{
    return _.map(array,value=&#x3E;Math.abs(value))
}
let max = array=&#x3E;{
    return Math.max(...array)
}
let r = _[name](mapQual,max)([1,-3,2]);
expect(r).to.be.equal(3)</code></pre></dd>
      </dl>
    </section>
    <section class="suite">
      <h1>isEmpty</h1>
      <dl>
        <dt>isEmpty([]) == true</dt>
        <dd><pre><code>expect(_[name]([])).to.be.equal(true)</code></pre></dd>
        <dt>isEmpty([1,2,3]) == false</dt>
        <dd><pre><code>expect(_[name](array)).to.be.equal(false)</code></pre></dd>
        <dt>isEmpty({&#x22;a&#x22;:&#x22;a&#x22;,&#x22;b&#x22;:&#x22;b&#x22;}) == false</dt>
        <dd><pre><code>expect(_[name](obj)).to.be.equal(false)</code></pre></dd>
        <dt>isEmpty({}) == true</dt>
        <dd><pre><code>expect(_[name](objNull)).to.be.equal(true)</code></pre></dd>
        <dt>isEmpty(&#x22;str&#x22;) == false</dt>
        <dd><pre><code>expect(_[name](str)).to.be.equal(false)</code></pre></dd>
        <dt>isEmpty(&#x22;&#x22;) == true</dt>
        <dd><pre><code>expect(_[name](&#x27;&#x27;)).to.be.equal(true)</code></pre></dd>
        <dt>isEmpty(false) == false</dt>
        <dd><pre><code>expect(_[name](value)).to.be.equal(value);</code></pre></dd>
        <dt>isEmpty(undefined) == undefined</dt>
        <dd><pre><code>expect(_[name](value)).to.be.equal(value);</code></pre></dd>
        <dt>isEmpty(null) == null</dt>
        <dd><pre><code>expect(_[name](value)).to.be.equal(value);</code></pre></dd>
        <dt>isEmpty(NaN) == NaN</dt>
        <dd><pre><code>expect(_[name](nan)).to.be.NaN;</code></pre></dd>
      </dl>
    </section>
    <section class="suite">
      <h1>hasKey</h1>
      <dl>
        <dt>hasKey([]) == []</dt>
        <dd><pre><code>expect(_[name]([])).to.be.deep.equal([])</code></pre></dd>
        <dt>hasKey({&#x22;a&#x22;:&#x22;a&#x22;,&#x22;b&#x22;:&#x22;b&#x22;},&#x27;a&#x27;) == true</dt>
        <dd><pre><code>expect(_[name](obj,&#x27;a&#x27;)).to.be.equal(true)</code></pre></dd>
        <dt>hasKey(a) == false</dt>
        <dd><pre><code>expect(_[name](objNull,&#x27;a&#x27;)).to.be.equal(false)</code></pre></dd>
        <dt>hasKey(false) == false</dt>
        <dd><pre><code>expect(_[name](value)).to.be.equal(value);</code></pre></dd>
        <dt>hasKey(undefined) == undefined</dt>
        <dd><pre><code>expect(_[name](value)).to.be.equal(value);</code></pre></dd>
        <dt>hasKey(null) == null</dt>
        <dd><pre><code>expect(_[name](value)).to.be.equal(value);</code></pre></dd>
        <dt>hasKey(NaN) == NaN</dt>
        <dd><pre><code>expect(_[name](nan)).to.be.NaN;</code></pre></dd>
      </dl>
    </section>
    <section class="suite">
      <h1>check varialbe type</h1>
      <dl>
        <dt>isObject([object Object]) == true</dt>
        <dd><pre><code>expect(_.isObject(obj)).to.be.equal(true)</code></pre></dd>
        <dt>isObject([1,2,3]) == false</dt>
        <dd><pre><code>expect(_.isObject(array)).to.be.equal(false)</code></pre></dd>
        <dt>isArray([1,2,3]) == true</dt>
        <dd><pre><code>expect(_.isArray(array)).to.be.equal(true)</code></pre></dd>
        <dt>isFunction(Function) == true</dt>
        <dd><pre><code>expect(_.isFunction(fn)).to.be.equal(true)</code></pre></dd>
        <dt>isPromise(Promise) == true</dt>
        <dd><pre><code>expect(_.isPromise(promise)).to.be.equal(true)</code></pre></dd>
        <dt>isDate(Date) == true</dt>
        <dd><pre><code>expect(_.isDate(date)).to.be.equal(true)</code></pre></dd>
        <dt>isRegExp(/1/) == true</dt>
        <dd><pre><code>expect(_.isRegExp(/1/)).to.be.equal(true)</code></pre></dd>
        <dt>isMap(Map) == true</dt>
        <dd><pre><code>expect(_.isMap(map)).to.be.equal(true)</code></pre></dd>
        <dt>isSet(Set) == true</dt>
        <dd><pre><code>expect(_.isSet(set)).to.be.equal(true)</code></pre></dd>
        <dt>isString(&#x27;&#x27;) == true</dt>
        <dd><pre><code>expect(_.isString(&#x27;&#x27;)).to.be.equal(true)</code></pre></dd>
        <dt>isNumber(1) == true</dt>
        <dd><pre><code>expect(_.isNumber(1)).to.be.equal(true)</code></pre></dd>
        <dt>isNull(null) == true</dt>
        <dd><pre><code>expect(_.isNull(null)).to.be.equal(true)</code></pre></dd>
        <dt>isNaN(NaN) == true</dt>
        <dd><pre><code>expect(_.isNaN(NaN)).to.be.equal(true)</code></pre></dd>
        <dt>isUndefined(undefined) == true</dt>
        <dd><pre><code>expect(_.isUndefined(undefined)).to.be.equal(true)</code></pre></dd>
        <dt>isSymbol(symbol) == true</dt>
        <dd><pre><code>expect(_.isSymbol(symbol)).to.be.equal(true)</code></pre></dd>
      </dl>
    </section>
    <section class="suite">
      <h1>isEqual</h1>
      <dl>
        <dt>isEqual([],[]) == true</dt>
        <dd><pre><code>expect(_[name]([],[])).to.be.equal(true)</code></pre></dd>
        <dt>isEqual({},{} == true</dt>
        <dd><pre><code>expect(_[name]({},{})).to.be.equal(true)</code></pre></dd>
        <dt>isEqual({a:1},{a:1} == true</dt>
        <dd><pre><code>expect(_[name]({a:1},{a:1})).to.be.equal(true)</code></pre></dd>
        <dt>isEqual({b:1,a:2},{a:2,b:1}) == true</dt>
        <dd><pre><code>expect(_[name]({b:1,a:2},{a:2,b:1})).to.be.equal(true)</code></pre></dd>
        <dt>isEqual({a:[1,false]},{a:[1,false]} == true</dt>
        <dd><pre><code>expect(_[name]({a:[1,2]},{a:[1,2]})).to.be.equal(true)</code></pre></dd>
        <dt>isEqual({a:{a:NaN}},{a:{a:NaN}} == true</dt>
        <dd><pre><code>expect(_[name]({a:{a:NaN}},{a:{a:NaN}})).to.be.equal(true)</code></pre></dd>
        <dt>isEqual([null,&#x27;s&#x27;],[null,&#x27;s&#x27;]) == true</dt>
        <dd><pre><code>expect(_[name]([null,&#x27;s&#x27;],[null,&#x27;s&#x27;])).to.be.equal(true)</code></pre></dd>
        <dt>isEqual([[1,2],{a:1}],[[1,2],{a:1}]) == true</dt>
        <dd><pre><code>expect(_[name]([[1,2],{a:1}],[[1,2],{a:1}])).to.be.equal(true)</code></pre></dd>
        <dt>isEqual([1,2],[2,1]) == false</dt>
        <dd><pre><code>expect(_[name]([1,2],[2,1])).to.be.equal(false)</code></pre></dd>
      </dl>
    </section>
    <section class="suite">
      <h1>inMatch</h1>
      <dl>
        <dt>inMatch({},{}) == true</dt>
        <dd><pre><code>expect(_[name]({},{})).to.be.equal(true)</code></pre></dd>
        <dt>inMatch({a:1,b:2},{a:1}) == true</dt>
        <dd><pre><code>expect(_[name]({a:1,b:2},{a:1})).to.be.equal(true)</code></pre></dd>
        <dt>inMatch({a:1,b:2},{a:2}) == true</dt>
        <dd><pre><code>expect(_[name]({a:1,b:2},{a:2})).to.be.equal(false)</code></pre></dd>
        <dt>inMatch({a:[1],b:2},{a:[1]}) == true</dt>
        <dd><pre><code>expect(_[name]({a:[1],b:2},{a:[1]})).to.be.equal(true)</code></pre></dd>
      </dl>
    </section>
    <section class="suite">
      <h1>random</h1>
      <dl>
        <dt>random()  == undefined</dt>
        <dd><pre><code>expect(_[name]()).to.be.an(&#x27;undefined&#x27;)</code></pre></dd>
        <dt>random(2) == number</dt>
        <dd><pre><code>expect(_[name](2)).to.be.a(&#x27;number&#x27;)</code></pre></dd>
        <dt>random(2,4) == number</dt>
        <dd><pre><code>expect(_[name](2,4)).to.be.a(&#x27;number&#x27;)</code></pre></dd>
      </dl>
    </section>
    <section class="suite">
      <h1>formatDate</h1>
      <dl>
        <dt>formatDate(Date,&#x27;yyyy-M-d H:m:s&#x27;) ==  2020-5-1 18:35:5</dt>
        <dd><pre><code>let date = new Date(&#x27;2020/5/1 18:35:5&#x27;);
expect(_[name](date,&#x27;yyyy-M-d H:m:s&#x27;)).to.be.equal(&#x27;2020-5-1 18:35:5&#x27;)</code></pre></dd>
        <dt>formatDate(Date,&#x27;yyyy-MM-dd H:m:s&#x27;)  == 2020-05-01 18:35:05</dt>
        <dd><pre><code>let date = new Date(&#x27;2020/5/1 18:35:5&#x27;);
expect(_[name](date,&#x27;yyyy-MM-dd H:m:ss&#x27;)).to.be.equal(&#x27;2020-05-01 18:35:05&#x27;)</code></pre></dd>
        <dt>formatDate(Date,&#x27;MM&#x27;) == 05</dt>
        <dd><pre><code>let date = new Date(&#x27;2020/5/1 18:35:5&#x27;);
expect(_[name](date,&#x27;MM&#x27;)).to.be.equal(&#x27;05&#x27;)</code></pre></dd>
      </dl>
    </section>
